
// 导入用户集合构造函数
const { User } = require('../../model/user');
// 导入bcrypt
const bcrypt = require('bcrypt');

module.exports = async (req, res) => {
    // 接收请求参数
    const { email, password } = req.body;
    // 服务器二次验证，防止客户端禁止JS
    // if (email.trim().length == 0 || password.trim().length == 0) {
    // 	return res.status(400).send('<h4>邮件地址或者密码不得为空</h4>');
    // }
    if (email.trim().length == 0 || password.trim().length == 0) {
        return res.status(400).render('admin/error', {
            msg: '邮箱地址或者密码不得为空'
        });
    }
    // 根据邮箱地址查询用户信息
    // 如果查询到用户,user的值是对象类型，没查询到是空
    let user = await User.findOne({
        email
    });
    if (user) {
        // 比对密码
        let isValid = await bcrypt.compare(password, user.password);
        if (isValid) {
            // 登陆成功
            // 将用户存储到session中
            req.session.username = user.username;
            req.session.role = user.role;
            
            // req.app就是服务器app
            req.app.locals.userInfo = user;
            // 用户角色进行判断
            if (user.role == 'admin') {
                 // express重定向
                res.redirect('/admin/user')
            } else {
                res.redirect('/home');
            }
           

           

        } else {
            return res.status(400).render('admin/error', {
                msg: '邮箱地址或者密码错误'
            });
        }
    } else {
        return res.status(400).render('admin/error', {
            msg: '邮箱地址不存在'
        });
    }
};

